package com.cmf.controladores;

// @ Copyright
// Ingeniero Juan José Puello Fuentes.
import com.cmf.model.Pregunta;
import java.io.*;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Archivo{

    private ObjectInputStream archivoIn;
    private ObjectOutputStream archivoOut;
    private static LinkedList<File> list;

    public Archivo(){
        list=new LinkedList<File>();
    }
    public static LinkedList<File> ficheros(File f, String extencion){
        File[]fichero=f.listFiles();
        for(int i=0;i<fichero.length;i++){
            if(fichero[i].isDirectory())
                ficheros(fichero[i],extencion);
            else
                if(fichero[i].isFile()&&!fichero[i].isHidden()&&fichero[i].getName().endsWith(extencion))
                    list.add(fichero[i]);
		}
        return list;
	}
    public static int cantidadPreguntas(File f, String extencion){
        File[]fichero=f.listFiles();
        for(int i=0;i<fichero.length;i++){
            if(fichero[i].isFile()&&!fichero[i].isHidden()&&fichero[i].getName().endsWith(extencion))
                list.add(fichero[i]);
        }
        return list.size();
    }

    public Object abrir(String archivo){
        Object objeto = null;
        try{
            File file=new File("");
            File f=new File(file.getCanonicalPath()+"/src/com/cmf/recursos/preguntas/"+archivo);
           archivoIn = new ObjectInputStream(new FileInputStream(f));
           objeto = archivoIn.readObject();
           archivoIn.close();
        }catch(Exception er){
           //System.out.println("Generando archivo " +er+ archivo);
        }
        return objeto;
    }

    public void guardar(Object objeto,String archivo){
        try{
            File file=new File("");
            File f=new File(file.getCanonicalPath()+"/src/com/cmf/recursos/preguntas/"+archivo);
            archivoOut = new ObjectOutputStream(new FileOutputStream(file.getCanonicalPath()+"/src/com/cmf/recursos/preguntas/"+archivo));
            archivoOut.writeObject(objeto);
            archivoOut.close();
        }catch(Exception er){
            System.out.println("Error al guardar los datos..!"+er);
	}
    }

    public LinkedList<Pregunta> listarPreguntas() {
        LinkedList<Pregunta> lista = new LinkedList<Pregunta>();
        Archivo a=new Archivo();
        try {
            
            Object objeto = null;
            File file = new File("");
            File f = new File(file.getCanonicalPath() + "/src/com/cmf/recursos/preguntas");
            
            int max=a.cantidadPreguntas(f, "txt");
            int k=1;
            String[] nombres=new String[max];
            for (int i = 0; i < nombres.length; i++) {
                nombres[i]=k+".txt";
                k++;
            }
            for (int i = 0; i < nombres.length; i++) {
                if(a.abrir(nombres[i])!=null)
                    lista.add((Pregunta) a.abrir(nombres[i]));
            }
            
        } catch (IOException ex) {
            Logger.getLogger(Archivo.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lista;
    }
}